<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        // Promise.resolve() 将现有的对象转换为promise对象，并且是成功状态
        let obj = {
            name:'tom'
        }
        let p1 = Promise.resolve(obj);
        console.log(p1);
        p1.then((res)=>{
            console.log(res);//obj对象
        })
        let p2 = Promise.resolve('zihao');
        console.log(p2);
        p2.then((res)=>{
            console.log(res);
        })

        // thenable对象 特殊现象
        let sunwei = {
            then(resolve,reject){
                resolve('sunwei');
            }
        }
        let p3 = Promise.resolve(sunwei);
        console.log(p3);
        p3.then((res)=>{
            console.log(res);//sunwei这个对象但是不是   把字符串sunwei返回
        })

        let p4 = Promise.resolve();
        p4.then(()=>{
            console.log('什么都不传 什么都不接受了,执行该函数的逻辑即可');
        })

        // Promsie.reject() 返回promise实例对象 但是是失败状态
        /* let p5 = Promise.reject('出错了');
        p5.catch((err)=>{
            console.log(err);
        }) */
        /* let p6 = Promise.reject({err:'出错了'});
        p6.catch(err=>{
            console.log(err);
        }) */
       /*  let zihao = {
            catch(resolve,reject){
                reject('出错了')
            }
        }
        let xuecheng = {
            then(resolve,reject){
                reject('出错了！！');
            }
        }
        let p7 = Promise.reject(xuecheng);
        p7.catch(err=>{
            console.log(err);
        }) */

        // Promise.all() 用于将多个promise对象，包装成一个新的promise,以数组的形式传递给Promise.all([])
        // 当所有的promise实例都是成功状态，新形成的promise对象是成功的状态
        // 若是其中有一个失败状态，则就是失败状态，有多个失败状态，返回第一个的值

        let p9 = new Promise((resolve,reject)=>{
            if(false){
                resolve('成功')
            }else{
                reject('失败');
            }
        })
        let p10 = new Promise((resolve,reject)=>{
            if(false){
                resolve('10成功')
            }else{
                reject('10失败');
            }
        })
        let p_all = Promise.all([p1,p2,p3,p4,p9,p10]);
        console.log(p_all);
        p_all.then(data=>{
            console.log(data);
        }).catch(err=>{
            console.log(err);
        })


    </script>
</body>
</html>